package com.oddfar.campus.framework.api.sysconfig;

import cn.hutool.core.convert.Convert;

public class ConfigExpander {
    /**
     * 用户默认头像url
     */
    public static String getUserDefaultAvatar() {
        return ConfigContext.me().selectConfigByKey("sys.user.default.avatar");
    }

    /**
     * 验证码类型
     */
    public static String getLoginCaptchaType() {
        return ConfigContext.me().selectConfigByKey("sys.login.captchaType", String.class, "math");
    }

    /**
     * 获取操作系统相关的本地文件存储路径配置.
     *
     * @return 根据操作系统类型返回的本地文件存储路径
     */
    public static String getFileProfile() {

        // 获取系统的名称，并转换为小写
        String osName = System.getProperty("os.name").toLowerCase();

        // 根据操作系统类型选择对应的配置项
        if (osName.contains("win")) {
            // 如果是Windows操作系统，则从配置上下文中获取名为"sys.local.profile.win"的配置项
            // 如果未找到或者配置值为空，则使用默认路径"D:\\uploadPath"
            return ConfigContext.me().selectConfigByKey("sys.local.profile.win", String.class, "D:\\uploadPath");
        }
        if (osName.contains("mac")) {
            // 如果是Mac操作系统，则从配置上下文中获取名为"sys.local.profile.mac"的配置项
            // sys.local.profile.mac 是一个配置键（configuration key），通常在应用程序的配置文件或配置管理系统中使用，用来存储特定于Mac操作系统的本地配置信息
            // 如果未找到或者配置值为空，则使用默认路径"~/uploadPath"（通常表示用户主目录下的uploadPath文件夹）
            return ConfigContext.me().selectConfigByKey("sys.local.profile.mac", String.class, "~/uploadPath");
        }
        if (osName.contains("linux")) {
            // 如果是Linux操作系统，则从配置上下文中获取名为"sys.local.profile.linux"的配置项
            // 如果未找到或者配置值为空，则使用默认路径"/data/uploadPath"
            return ConfigContext.me().selectConfigByKey("sys.local.profile.linux", String.class, "/data/uploadPath");
        }
        // 如果没有匹配到任何操作系统，则返回null
        return null;
    }

    /**
     * 获取头像上传路径
     */
    public static String getAvatarPath() {
        return getFileProfile() + "/avatar";
    }


    /**
     * 全局日志记录，开启则所有请求都将记录日志
     */
    public static Boolean getGlobalControllerOpenFlag() {
        String flag = ConfigContext.me().selectConfigByKey("sys.log.global.flag", String.class, "false");

        return Convert.toBool(flag);

    }

}
